
export function debounce (func, wait, immediate) {
  let timeout, args, context, timestamp, result

  const later = function () {
    // 据上一次触发时间间隔
    const last = +new Date() - timestamp

    // 上次被包装函数被调用时间间隔last小于设定时间间隔wait
    if (last < wait && last > 0) {
      timeout = setTimeout(later, wait - last)
    } else {
      timeout = null
      // 如果设定为immediate===true，因为开始边界已经调用过了此处无需调用
      if (!immediate) {
        result = func.apply(context, args)
        if (!timeout) context = args = null
      }
    }
  }

  return function (...args) {
    context = this
    timestamp = +new Date()
    const callNow = immediate && !timeout
    // 如果延时不存在，重新设定延时
    if (!timeout) timeout = setTimeout(later, wait)
    if (callNow) {
      result = func.apply(context, args)
      context = args = null
    }

    return result
  }
}

// 计算时间
export function getDateStr (AddDayCount) {     
  var dd = new Date()    
  dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
  console.log(dd)    
  var y = dd.getFullYear()     
  var m = (dd.getMonth() + 1) < 10 ? "0"+ (dd.getMonth() + 1) : (dd.getMonth() + 1) // 获取当前月份的日期，不足10补0    
  var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate() // 获取当前几号，不足10补0    
  return y + "-" + m + "-"+ d    
}

export function getNextDay(d) {
  var d = new Date(d)
  d = +d + 1000 * 60 * 60 * 24
  d = new Date(d)
  return d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate()
}